דף הבית  >> 
 >> 

הרשם  |  התחבר


פרטי מימד מגיעים באיחור 

מאת    [ 11/01/2012 ]

מילים במאמר: 600   [ נצפה 2386 פעמים ]

פעמים רבות, מאפיינים של רשומה מסויימת מגיעים בזמנים שונים. למשל בעת הכנסת לקוח למערכת לא ציינו האם הוא זכר או נקבה ורק לאחר חודש הוסיפו פרט זה. במקרה זה אין בעיה ומבצעים עדכון למימד. אך מה קורה כאשר דוקא המפתח של המימד מגיע באיחור?

נתחיל בדוגמה:

חברת ליסינג מבצעת עסקאות שונות. יצרנו Fact Table עם מדדים המתארים את העסקה: מחיר רכב, תשלום חודשי וכו'. הפקט מחובר למימד רכבים על פי מספר רכב (בפועל כמובן עם מפתח פנימי – Generated Key) אך לצורך הדיון נתייחס למספר הרכב. אל מימד העסקאות מחובר הפקט באמצעות מספר העסקה.

באופן זה ניתן לראות כמה עסקאות למכירת סיטרואן היו בחודש מסויים.

האתגר: בין חתימת עסקה וקבלת מספר עסקה חדשה לבין חיבור רכב לעסקה יכולים לעבור מספר חודשים. לפעמים הלקוח מבקש רכב אשר אינו במלאי היבואן ויש להמתין עד שיגיע לארץ. במצב זה ישנה עסקה בלי מספר רישוי בתוכה. אנו נכניס את העסקה אל הפקט עם מספר רישוי שיחבר לרשומת ה"לא מוגדר" במימד הרכבים כדי שהעסקה לא תושמט מהמימד עקב JOIN לא קיים למימד הרכבים.

פתרון זה לא השביע את רצון הלקוח כיוון שלמרות שאין רכב (מספר רישוי) מסויים בעסקה, כבר יודעים שהיא תהיה עסקה אליה יכנס בבוא הזמן רכב מסוג יגואר. כיצד עם כן נציג את דגם הרכב בעסקה בה עדיין לא הוגדר רכב (מספר רישוי) מסויים.

ישנן שתי אפשרויות לפתרון הבעיה:

פתרון פשוט: הפרדה למימדים שונים את דגם הרכב ומספר הרישוי של הרכב. פתרון זה נפסל בגלל שהיררכיה דגם ß מספר רישוי הינה טבעית (לכל מספר רישוי דגם בודד( ולכן זה גם היה פוגע בביצועים וגם יותר ממשק עבודה פחות נוח למשתמש.

לבעיה זו ביצעתי פתרון הכולל מספר שלבים:


    •  הוספת רכבים חדשים למימד רכבים בצורה הרגילה ועסקאות עם מספר רישוי רכב שאינו אפס (כלומר יש רכב בעסקה) אל הפקט בצורה הרגילה.
    •  לגבי עסקאות להן יש דגם רכב אך עדיין לא הוגדר רכב (מספר רישוי) מסויים, מבוצעים הצעדים הבאים:

      •  מגדירים טבלה חדשה בבסיס הנתונים Staging. טבלה זו תכיל את השדות דגם רכב, מספר רכב אשר ייוצר בתוך המערכת באמצעות Identity. כדי לא לבלבל יוגדר המספר הראשון (Seed) של ה- Identity כמינוס אחד (1-) עם ירידה (Increment) של מינוס אחד . כלומר תהיה ספירה למטה.
      •  נוסיף רכבים מלאכותיים אלו אל מימד הרכבים.
      •  עתה, נרשום שאילתה אשר לוקחת מנתוני המקור רק את העסקאות שלא הוגדר להן רכב (מספר רישוי אפס או NULL) ואותן נחבר אל מימד הרכבים באמצעות JOIN על הדגם ולא על מספר הרישוי. נקבל בפקט מספר רישוי מלאכותי (קטן מאפס על פי המתווה של סעיף 2.א) . הערה חשובה: יש לשים לב שב- JOIN אל מימד הרכבים נוסיף גם את התנאי מספר רישוי קטן מאפס במימד. במידה ולא נוסיף תנאי זה נקבל מכפלה קרטזית כיוון שלכל דגם יש הרבה רכבים (אך רק רכב אחד עם מספר רישוי קטן מאפס).

קיבלנו טבלת עובדות המכילה את כל ההזמנות. להזמנות להן עדיין לא הוגדר מספר רישוי של רכב מסויים, יש קישור למימד הרכבים עם מספר רישוי מלאכותי ולכן רואים את הדגם המקושר להזמנה ובירידה לרמת מספר רישוי רואים מספר רישוי שלילי אשר מבהיר למשתמש שלא מדובר במספר רישוי מסויים.

הערות:

לצורך פישוט המאמר לא התייחסתי בפתרון לנושא המפתח המלאכותי (Surrogate / Generated Key). בעולם האמיתי לא נקשר בדרך כלל את מימד הרכבים אל טבלת העובדות באמצעות מספר הרישוי אלא באמצעות מפתח מלאכותי אשר אותו ניתן לייצר על ידי הגדרת שדה מפתח מלאכותי במימד הרכבים עם Identity (כלומר מונה רץ). במצב זה כאשר נרצה לבצע Insert לטבלת הרכבים אם מפתח זר שהוכן בטבלה אחרת נצטרך לאפשר זאת באמצעות פקודה מקדימה: SET IDENTITY_INSERT Table_Name ON .  

במידה ויש מדד לספירת רכבים ונרצה (כמובן) למנות רק רכבים קיימים בפועל, נוכל להעזיר בשיטה המתוארת כאן:http://www.olap.co.il/?p=543 עם התאמה לספירת רק ערכים גדולים מאפס.

 

 

רימון חייט , MBA, הינו יועץ עצמאי לתחום הבינה העסקית (BI) וכן מרצה בתחום זה לתואר ראשון במכללה למנהל. מאחורי רימון מעל 15 שנות ניסיון בתחום זה. ניתן לקרוא מאמרים נוספים בבלוג www.OLAP.co.il. ניתן ליצור קשר עם רימון ב- rimon@olap.co.il




מאמרים חדשים מומלצים: 

חשיבות היוגה לאיזון אורח חיים יושבני  -  מאת: מיכל פן מומחה
היתרונות של עיצוב בית בצורת L -  מאת: פיטר קלייזמר מומחה
לגלות, לטפח, להצליח: חשיבות מימוש פוטנציאל הכישרון לילדים עם צרכים מיוחדים -  מאת: עמית קניגשטיין מומחה
המדריך לניהול כלכלת משק בית עם טיפים ועצות לניהול תקציב -  מאת: נדב טל מומחה
חשבתם שרכב חשמלי פוטר מטיפולים.. תחשבו שוב -  מאת: יואב ציפרוט מומחה
מה הסיבה לבעיות האיכות בעולם -  מאת: חנן מלין מומחה
מערכת יחסים רעילה- איך תזהו מניפולציות רגשיות ותתמודדו איתם  -  מאת: חגית לביא מומחה
לימודים במלחמה | איך ללמוד ולהישאר מרוכז בזמן מלחמה -  מאת: דניאל פאר
אימא אני מפחד' הדרכה להורים כיצד תוכלו לנווט את קשיי 'מצב המלחמה'? -  מאת: רזיאל פריגן פריגן מומחה
הדרך שבה AI (בינה מלאכותית) ממלאת את העולם בזבל דיגיטלי -  מאת: Michael - Micha Shafir מומחה

מורנו'ס - שיווק באינטרנט

©2022 כל הזכויות שמורות

אודותינו
שאלות נפוצות
יצירת קשר
יתרונות לכותבי מאמרים
מדיניות פרטיות
עלינו בעיתונות
מאמרים חדשים

לכותבי מאמרים:
פתיחת חשבון חינם
כניסה למערכת
יתרונות לכותבי מאמרים
תנאי השירות
הנחיות עריכה
תנאי שימוש במאמרים



מאמרים בפייסבוק   מאמרים בטוויטר   מאמרים ביוטיוב